package web

import (
	"log"
	"net/http"

	"gitee.com/mymud/internal/users"
	"github.com/gin-gonic/gin"
)

func WebServer() {
	//创建路由
	r := gin.Default()
	//静态文件目录
	r.Static("/static", "./static")
	//设置首页路由
	r.GET("/", func(c *gin.Context) {
		c.File("./static/index.html")
	})
	//设置游戏页面路由
	r.GET("/game.html", func(c *gin.Context) {
		c.File("./static/game.html")
	})
	//API路由
	r.POST("/api/login", func(c *gin.Context) {
		var loginForm users.LoginForm
		if err := c.ShouldBindJSON(&loginForm); err != nil {
			c.JSON(http.StatusBadRequest, gin.H{
				"code":    400,
				"message": "请求参数错误",
			})
			return
		}
		//验证用户名密码
		if loginForm.Username != "admin" || loginForm.Password != "123456" {
			c.JSON(http.StatusUnauthorized, gin.H{
				"code":    401,
				"message": "用户名或密码错误",
			})
			return
		}
		// 设置Cookie
		c.SetCookie("token", "123456", 3600, "/", "", false, true) // 有效期1小时，HttpOnly
		// 返回JSON响应
		c.JSON(http.StatusOK, gin.H{
			"code":     200,
			"message":  "登录成功",
			"redirect": "/game.html",
		})
	})
	// 添加检查登录状态的API
	r.GET("/api/check-login", func(c *gin.Context) {
		// 从请求中获取Cookie
		token, err := c.Cookie("token")
		if err != nil || token != "123456" {
			// 即使在游戏页面也需要重定向，确保用户回到登录页
			c.JSON(http.StatusOK, gin.H{
				"code":     401,
				"loggedIn": false,
				"message":  "未登录或登录已过期",
				"redirect": "/",
			})
			return
		}

		// Cookie验证成功
		c.JSON(http.StatusOK, gin.H{
			"code":     200,
			"loggedIn": true,
			"message":  "已登录",
			"redirect": "/game.html",
		})
	})

	// 添加退出登录的API
	r.POST("/api/logout", func(c *gin.Context) {
		// 后端清除Cookie（设置过期时间为过去）
		c.SetCookie("token", "", -1, "/", "", false, true)
		c.JSON(http.StatusOK, gin.H{
			"code":     200,
			"message":  "已成功退出登录",
			"redirect": "/",
		})
	})

	log.Fatal(r.Run(":8000"))
}
